home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 19 / CU Amiga Magazine's Super CD-ROM 19 (1998)(EMAP Images)(GB)[!][issue 1998-02].iso / CUCD / Programming / LEDA / source / src / graph_alg / _dfs.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-16  |  1.1 KB  |  51 lines

  1. /*******************************************************************************
  2. +
  3. +  LEDA  3.1c
  4. +
  5. +
  6. +  _dfs.c
  7. +
  8. +
  9. +  Copyright (c) 1994  by  Max-Planck-Institut fuer Informatik
  10. +  Im Stadtwald, 6600 Saarbruecken, FRG     
  11. +  All rights reserved.
  12. *******************************************************************************/
  13.  
  14.  
  15.  
  16. /*******************************************************************************
  17. *                                                                              *
  18. *  DFS  (depth first search)                                                   *
  19. *                                                                              *
  20. *******************************************************************************/
  21.  
  22.  
  23. #include <LEDA/graph_alg.h>
  24.  
  25. list<node> DFS(const graph& G, node v, node_array<bool>& reached)
  26.   list<node>  L;
  27.   node_stack  S;
  28.   node w;
  29.  
  30.   if (!reached[v])
  31.    { reached[v] = true;
  32.      L.append(v);
  33.      S.push(v);
  34.     }
  35.  
  36.   while (!S.empty())
  37.    { v = S.pop(); 
  38.      forall_adj_nodes(w,v) 
  39.        if (!reached[w]) 
  40.         { reached[w] = true;
  41.           L.append(w);
  42.           S.push(w);
  43.          }
  44.     }
  45.  
  46.   return L;
  47.  
  48.